The present invention relates generally to application threads and more particularly to determining an optimum number of application threads.
As the prevalence of multicore processors increases so too will the development of multithreaded applications. However, multithreaded applications suffer from the fact that determining the optimum number of threads depends largely on the number of processor cores as well as application characteristics in a given landscape.
Too many threads and multithreaded applications may experience lag due to over-fragmentation. Simply put, too many threads are vying for a finite number of clock cycles. Too few threads and a multithreaded application may never achieve full utilization of the available cores.
Conventional attempts to solve this problem include creating as many threads as cores in a given landscape. However in a worst case scenario, all threads may perform a remove periphery at the same time resulting in sub-optimum processor utilization. Another attempt involves dynamically creating and removing threads. Nonetheless this requires a system performance framework to evaluate the impact of additional threads. This, and dynamic creation and deletion of threads has additional drawbacks.